---@class AISkillsData : Object
local AISkillsData = {}
local IStrue = true
local ISfriend = "friend"
local ISenemy = "enemy"
local ISenemyfriend = "friend&enemy"
local InVokeSkillNormal = 1
local InVokeSkillSpecial = 2
--询问技判定类型
local InVokeToFriend = {type = InVokeSkillNormal,skilltar = ISfriend}
local InVokeToEnemy = {type = InVokeSkillNormal,skilltar = ISenemy}
local InVokeSpecial = {type = InVokeSkillSpecial}
local InVokeJudgeEnemy = {type = InVokeSkillNormal,skilltar = ISenemy,isjudge=IStrue}
local InVokeJudgeFriend = {type = InVokeSkillNormal,skilltar = ISfriend,isjudge=IStrue}
--技能黑名单，让一些技能永远不发动(默认技能真名)
AISkillsData.BlackSkills = {shijiz_viewas=IStrue,zhiyan=IStrue,kouchao=IStrue,sheyi=IStrue,xufa=IStrue,tunchu=IStrue,midao=IStrue,xiongsi=IStrue,miyi=IStrue,danxinn=IStrue,buxu=IStrue,heqia=IStrue,fangquan=IStrue,sishu=IStrue,xianwan=IStrue,xushen=IStrue,xuanhua=IStrue,ruxian=IStrue,xuancun=IStrue,tousui=IStrue,chuhai=IStrue,pozhu=IStrue,huozhong=IStrue,js__niluan_active=IStrue,dengnan=IStrue,cuifeng=IStrue,zhenfeng=IStrue,huiyun=IStrue,juezhi=IStrue,zhenjun=IStrue,xianbi=IStrue,shenxing=IStrue,huanshi=IStrue,xunzhi=IStrue,zishou=IStrue,zhiman=IStrue,qingzhong=IStrue}
--技能选项根据敌友目标选择合理选项（默认技能全名，优先找mustchose值为选择此选项。如果响应目标且tar属性是ISfriend则选择另一个属性chose的选项值。反之同理就是ISenemy）
AISkillsData.SkillChoice = {taoluanh={mustchose="taoluanh_prey"},qianchong={mustchose="basic"},yuzhi={tar=ISfriend,chose="yuzhi1"},m_ex__sidi={tar=ISfriend,chose="draw2"},os_xing__zhilue={tar=ISfriend,chose="os_xing__zhilue_draw"},shijiz = {tar=ISenemy,chose="Cancel"},ty__mumu={mustchose="ty__mumu1"},yinghun={mustchose="discard"},bingzheng={tar=ISenemyfriend,chose={friend="bingzheng_draw",enemy="bingzheng_discard"}},huiyun = {tar=ISenemy,chose="Cancel"},shenzhuo= {tar=ISfriend,chose="shenzhuo_drawOne"},fengji= {tar=ISfriend,chose="Cancel"},liangzhu= {tar=ISenemyfriend,chose={friend="liangzhu_draw2",enemy="draw1"}},joy__liangzhu= {tar=ISenemyfriend,chose={friend="joy__liangzhu_draw2",enemy="draw1"}}}
--让主动技能在出牌前先发动，默认是把牌出完后才发动(默认技能真名)
AISkillsData.UseSkillPrio = {zunwei=IStrue,yuanyu=IStrue,jiwu=IStrue,yanyu=IStrue,cuijian=IStrue,zhongjian=IStrue,wencan=IStrue,sanyao=IStrue,weikui=IStrue,fenxun=IStrue,dingpan=IStrue,ziyuan=IStrue,lijian=IStrue,chuli=IStrue,guose = IStrue,jianhe=IStrue,shanxie=IStrue,longdan=IStrue,shouli=IStrue,qiangzhiz=IStrue,zigu=IStrue,xuanbei=IStrue,jishe=IStrue,xuehen=IStrue,xuehen=IStrue,mouzhu=IStrue,cuirui=IStrue,jinggong=IStrue,songci=IStrue,poxi=IStrue,jijie=IStrue,yijue=IStrue,lifengc=IStrue,anguo=IStrue,sanchen=IStrue,yanxi=IStrue,yangwei=IStrue,rongbei=IStrue,yizheng=IStrue,wuyuan=IStrue,boyan=IStrue,xunji=IStrue,xuezhao=IStrue,nuchen=IStrue,kannan=IStrue,jianyan=IStrue,fanjian=IStrue,kurou=IStrue,qixi=IStrue,qiangwu=IStrue,zhoufu=IStrue,xueji=IStrue,juesi=IStrue,muzhen=IStrue,miewu=IStrue,shameng=IStrue,qiai=IStrue,qingce=IStrue,xiafeng=IStrue,jimeng=IStrue,zhengbing=IStrue,chengxian=IStrue,lianzhu=IStrue,guanhuo=IStrue,gongxin=IStrue,zhanding=IStrue,shidu=IStrue,tiaoxin=IStrue,changbiao=IStrue,duanliang=IStrue,luanji=IStrue,qimou=IStrue,huiyun=IStrue,juguan=IStrue,juesheng=IStrue,xiying=IStrue,moushi=IStrue,shanxi=IStrue,paiyi=IStrue,jixi=IStrue,yanzhu=IStrue,mieji=IStrue,yanjiao=IStrue,shangyi=IStrue,zundi=IStrue,l_hanmang=IStrue,l_yangzui=IStrue,l_zhenfan=IStrue,yingba = IStrue,shizhan = IStrue,gongqi = IStrue,jiefan = IStrue}
--最不优先攻击的技能列表(默认技能真名)
AISkillsData.WeekAtkSkills = {guanjue=IStrue,enyu=IStrue,zhenlie=IStrue,qiaoyan=IStrue,rangjie=IStrue,quanji=IStrue,cangxin=IStrue,buqu=IStrue,yuzhang=IStrue,liechi=IStrue,jilei=IStrue,fankui=IStrue,jiaoying=IStrue,cixiao=IStrue,yusui=IStrue,xibing=IStrue,jueyong=IStrue}
--针对敌人的技能表(默认技能真名)
AISkillsData.SelEnemyByChoose = {tianjie=IStrue,fenyue=IStrue,xunde=IStrue,porui=IStrue,yiyong=IStrue,dunxi=IStrue,yangzhong=IStrue,xiongsuan=IStrue,juece=IStrue,hj_gongshi=IStrue,wm_daowu=IStrue,jieyue=IStrue,suji_viewas=IStrue,porui=IStrue,yidu=IStrue,juexing=IStrue,jinglue=IStrue,lueying=IStrue,qingzi=IStrue,jinghong=IStrue,yingshui=IStrue,cuijian=IStrue,luecheng=IStrue,xiaoxi=IStrue,xiongsuan=IStrue,fenhui=IStrue,zhimin=IStrue,fengyan=IStrue,zhongjian=IStrue,wencan=IStrue,sankuang=IStrue,sanyao=IStrue,weikui=IStrue,fenxun=IStrue,liantao=IStrue,xiaosi=IStrue,zhefu=IStrue,dingpan=IStrue,hongyi=IStrue,liezhi=IStrue,lijian=IStrue,chuli=IStrue,guose = IStrue,lulue=IStrue,mini_zhuixi=IStrue,jianhe=IStrue,xiaoyin=IStrue,kenshang=IStrue,xingluan=IStrue,youjin=IStrue,binghuo=IStrue,lveying=IStrue,yingwu=IStrue,wentian=IStrue,qiangzhiz=IStrue,zuowei=IStrue,luanwu=IStrue,zhibian=IStrue,xuanbei=IStrue,zhennan=IStrue,shuyong=IStrue,xundao=IStrue,shipo=IStrue,tianxiang=IStrue,zhuri=IStrue,qiaoshui=IStrue,xianzhen=IStrue,xiansi=IStrue,zhanyi=IStrue,jiexun=IStrue,meibu=IStrue,shichou=IStrue,jixu=IStrue,xuehen=IStrue,mouzhu=IStrue,l_liezhen=IStrue,quhu=IStrue,gn_jieying=IStrue,jianzhengq=IStrue,cuirui=IStrue,jimeng=IStrue,xuepin=IStrue,changqu=IStrue,jiuxianc=IStrue,poyuan=IStrue,poxi=IStrue,liushi=IStrue,yijue=IStrue,zhukou=IStrue,ciwei=IStrue,zengou=IStrue,xuanfeng=IStrue,fensi=IStrue,juetao=IStrue,yanxi=IStrue,qingleng=IStrue,chengzhao=IStrue,anyong=IStrue,tianze=IStrue,xiaoguo=IStrue,runwei=IStrue,zhendu=IStrue,shihe=IStrue,hannan=IStrue,yingjian=IStrue,boyan=IStrue,xunji=IStrue,jieying=IStrue,cixiao=IStrue,nuchen=IStrue,lulve=IStrue,dushi=IStrue,pingxi=IStrue,daoshu=IStrue,zhafu=IStrue,liji=IStrue,qinguo=IStrue,youdi=IStrue,fanjian=IStrue,qixi=IStrue,tuxi=IStrue,zhoufu=IStrue,bifa=IStrue,xueji=IStrue,cuike=IStrue,juesi=IStrue,shuangren=IStrue,qingce=IStrue,zhengrong=IStrue,shuaiyan=IStrue,zhuidu=IStrue,fenwu=IStrue,qingkou=IStrue,duxing=IStrue,yizheng=IStrue,lianzhu=IStrue,guanhuo=IStrue,zhanding=IStrue,shidu=IStrue,tiaoxin=IStrue,jixi=IStrue,duanliang=IStrue,tianyi=IStrue,qiangxi=IStrue,leiji=IStrue,gongxin=IStrue,zenrun=IStrue,juesheng=IStrue,jixian=IStrue,juguan=IStrue,shoufu=IStrue,lingren=IStrue,fenglve=IStrue,shuimeng=IStrue,wenji=IStrue,shanxi=IStrue,luanzhan=IStrue,zenhui=IStrue,yanzhu=IStrue,pingkou=IStrue,mieji=IStrue,bolong=IStrue,pingtao=IStrue,shangyi=IStrue,yajun=IStrue,l_zhenfan=IStrue,l_tuxi=IStrue,l_wushuang=IStrue,yechou=IStrue,shizhan = IStrue,langxi = IStrue,qianxi=IStrue,duwu=IStrue}
--针对队友的技能表(默认技能真名)
AISkillsData.SelFriendByChoose = {zhijian=IStrue,fengji=IStrue,shuliang=IStrue,miji=IStrue,xiayuan=IStrue,longyin=IStrue,hongji=IStrue,shijian=IStrue,huantu=IStrue,zhongzuo=IStrue,mou__yanyu=IStrue,fazhu=IStrue,suizheng=IStrue,tingxian=IStrue,biaozhao=IStrue,dangzai=IStrue,jujianc=IStrue,fudao=IStrue,pijing=IStrue,zengdao=IStrue,qimei=IStrue,lizhan=IStrue,xinggu=IStrue,jisi=IStrue,qianya=IStrue,fuman=IStrue,hongde=IStrue,ziyuan=IStrue,tongqu=IStrue,quesong=IStrue,shandao=IStrue,l_yuanhu=IStrue,congjian=IStrue,huaiyuan=IStrue,zhengjian=IStrue,chuanshu=IStrue,boming=IStrue,shoushu=IStrue,piaoling=IStrue,jujian=IStrue,xianzhou=IStrue,yingyuan=IStrue,yili=IStrue,quhu=IStrue,xianfu=IStrue,jijie=IStrue,yajiao=IStrue,zhenge=IStrue,anguo=IStrue,sanchen=IStrue,rongbei=IStrue,zhiyan=IStrue,yanxiao=IStrue,yiji_active=IStrue,guanwei=IStrue,jixiang=IStrue,lirang=IStrue,zhujian=IStrue,xiangshu=IStrue,xunxian=IStrue,muzhen=IStrue,shameng=IStrue,qiai=IStrue,ruilian=IStrue,kujian=IStrue,mutao=IStrue,juntun=IStrue,wulie=IStrue,jiezi=IStrue,luanji=IStrue,kongsheng=IStrue,bingyi=IStrue,hongyuan=IStrue,moushi=IStrue,xingxue=IStrue,paiyi=IStrue,yanjiao=IStrue,zundi=IStrue,zaiqi=IStrue,xuanhuo = IStrue,jiefan = IStrue,fusong = IStrue,wuyuan = IStrue,chenqing = IStrue,zhenfu=IStrue,zhuihuan=IStrue}
--询问技能是否发动（默认技能真名,技能属性值为InVokeToFriend是检测到响应对象为队友时发动，技能属性值为InVokeToEnemy是检测到响应对象为敌人时发动。
AISkillsData.InvokeSkills = {baozu=InVokeToFriend,yijue=InVokeToFriend,xiayuan=InVokeToFriend,bihuoy=InVokeToFriend,yuanzi=InVokeToFriend,suifu=InVokeToEnemy,fengshih=InVokeToEnemy,chongyi=InVokeToFriend,xiantu=InVokeToFriend,qiaoshi=InVokeToFriend,fuyuan=InVokeToFriend,koulue=InVokeToEnemy,luanfeng=InVokeToFriend,xunde=InVokeToFriend,wanlan=InVokeToFriend,qiaomeng=InVokeToEnemy,gongjian=InVokeToEnemy,xiaoxi = InVokeToEnemy,chaofeng = InVokeToEnemy,zhongjie = InVokeToFriend,shejian = InVokeToEnemy,l_kuixi = InVokeSpecial,suoliang = InVokeToEnemy,jilei = InVokeJudgeFriend,ganglie = InVokeJudgeFriend,danshou = InVokeSpecial,jiyuan = InVokeJudgeFriend,kangkai = InVokeJudgeFriend,zhuhai = InVokeJudgeEnemy,yimou = InVokeToFriend,fenji = InVokeJudgeEnemy,buyi = InVokeToFriend,shiji = InVokeJudgeEnemy,wuqian = InVokeJudgeFriend,fankui = InVokeJudgeFriend,deshao = InVokeJudgeFriend,jiaohua = InVokeToFriend,jishan = InVokeToFriend,zhenlie = InVokeSpecial,wangxi = InVokeToEnemy,choutao = InVokeToFriend, ["#ice_sword_skill"] = InVokeSpecial,["fenli"] = InVokeSpecial}
--触发选牌技，让一些技能选择取消对ai比较友好(默认技能全名)
AISkillsData.CanCelSelCard = {ty_ex__qingxi=IStrue,miji=IStrue,enyuan=IStrue,tieji=IStrue,bolong=IStrue,changqu=IStrue,distribution_skill=IStrue,shichong=IStrue}
--不需要消耗牌的转化是为技(默认技能真名)
AISkillsData.NoCardVsSkills = {weijing=IStrue,juexing=IStrue,lveying=IStrue,yingwu=IStrue,shouli=IStrue,juesheng=IStrue,jiushi=IStrue,tousui=IStrue,luanwu=IStrue}
--出牌过程中用技能(属性为技能使用得牌名规则。默认技能真名)
AISkillsData.UseSkillByPlay = {analeptic ={nianen=IStrue,yizan=1,jiushi=1,qishe=IStrue,jiuchi=IStrue}}
--用牌智能指向多人的技能(默认技能真名)
AISkillsData.MutitarsByCard = {gonghu=IStrue,zhuosheng=IStrue,qirang=IStrue,fanyin=IStrue,guowu=IStrue,benxi=IStrue,sheyan=IStrue,jieying=IStrue,mini_miaobi=IStrue,mingfa=IStrue}
--卖血技能（优先受伤不出牌）(默认技能真名)
AISkillsData.DamageSkills = {rangjie=IStrue,jieming=IStrue,jingce=IStrue,kangli=IStrue,cangxin=IStrue,jiedao=IStrue,chengxiang=IStrue,yiji=IStrue,longhun=IStrue,jianxiong=IStrue,quanji=IStrue,qianlong=IStrue,chouce=IStrue,qingxian=IStrue,xieshu=IStrue,tianxiang=IStrue,enyuan=IStrue,fankui=IStrue}
--顶掉装备收益技能(默认技能真名)
AISkillsData.RepEquipSkills = {zhimin=IStrue,yizhao=IStrue,fenyin=IStrue,jianying=IStrue,xiaoji=IStrue,xuanfeng=IStrue,qinguo=IStrue}

function AISkillsData:getBlackSkills()
  return AISkillsData.BlackSkills
end
--设置此技能进入黑名单，即人机永远不会发动此技能
--skill为技能真名
function AISkillsData:setBlackSkills(skill)
  local config = AISkillsData.BlackSkills
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getSkillChoice()
  return AISkillsData.SkillChoice
end
--设置此技能发动后的选项根据响应目标选择choices内容
--skill为技能全名，choices为选择内容具体看上面。
function AISkillsData:setSkillChoice(skill,choices)
  local config = AISkillsData.SkillChoice
  if not config[skill] then
    config[skill] = choices
  else
    fk.qWarning("==========警告！！此技能已被定义过此次调用将不会生效=================")
  end
end

function AISkillsData:getUseSkillPrio()
  return AISkillsData.UseSkillPrio
end
--设置此主动技能在出牌前最优先使用
--skill为技能真名
function AISkillsData:setUseSkillPrio(skill)
  local config = AISkillsData.UseSkillPrio
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getWeekAtkSkills()
  return AISkillsData.WeekAtkSkills
end
--设置人机识别到此技能后最不优先攻击此技能目标
--skill为技能真名
function AISkillsData:setWeekAtkSkills(skill)
  local config = AISkillsData.WeekAtkSkills
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getSelEnemyByChoose()
  return AISkillsData.SelEnemyByChoose
end
--设置此技能发动后选择以敌人为目标
--skill为技能真名
function AISkillsData:setSelEnemyByChoose(skill)
  local config = AISkillsData.SelEnemyByChoose
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getSelFriendByChoose()
  return AISkillsData.SelFriendByChoose
end
--设置此技能发动后选择以友方为目标
--skill为技能真名
function AISkillsData:setSelFriendByChoose(skill)
  local config = AISkillsData.SelFriendByChoose
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getInvokeSkills()
  return AISkillsData.InvokeSkills
end
--设置此询问技能检测响应目标为敌友时候做是否选择。
--skill为技能真名，content为检测目标需要判定的敌友的配置，具体看上。
function AISkillsData:setInvokeSkills(skill,content)
  local config = AISkillsData.InvokeSkills
  if not config[skill] then
    config[skill] = content
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getCanCelSelCard()
  return AISkillsData.CanCelSelCard
end
--设置此技能在选牌时候点取消
--skill为技能全名
function AISkillsData:setCanCelSelCard(skill)
  local config = AISkillsData.CanCelSelCard
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getNoCardVsSkills()
  return AISkillsData.NoCardVsSkills
end
--设置此视为技能在不用消耗卡牌情况下发动技能
--skill为技能真名
function AISkillsData:setNoCardVsSkills(skill)
  local config = AISkillsData.NoCardVsSkills
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getUseSkillByPlay()
  return AISkillsData.UseSkillByPlay
end

function AISkillsData:getMutitarsByCard()
  return AISkillsData.MutitarsByCard
end
--设置此技能在发动后选多目标时候根据牌名智能选敌友
--skill为技能真名
function AISkillsData:setMutitarsByCard(skill)
  local config = AISkillsData.MutitarsByCard
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getDamageSkills()
  return AISkillsData.DamageSkills
end
--设置拥有此技能后可适当买血
--skill为技能真名
function AISkillsData:setDamageSkills(skill)
  local config = AISkillsData.DamageSkills
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

function AISkillsData:getRepEquipSkills()
  return AISkillsData.RepEquipSkills
end
--设置拥有此技能后可以顶掉装备（默认不能）
--skill为技能真名
function AISkillsData:setRepEquipSkills(skill)
  local config = AISkillsData.RepEquipSkills
  if not config[skill] then
    config[skill] = true
  else
    fk.qWarning("==========警告！！此技能已被定义过=================")
  end
end

return AISkillsData